package cn.hinglo.website.generator;

import com.jfinal.kit.PathKit;
import com.jfinal.plugin.activerecord.generator.Generator;
import com.jfinal.plugin.hikaricp.HikariCpPlugin;

import javax.sql.DataSource;


/**
 * @createTime: 2018/2/11
 * @author: HingLo
 * @description: 工具
 */
public class JfinalDemoGenerator {

    private static HikariCpPlugin createDruidPlugin() {
        return new HikariCpPlugin(
                "jdbc:mysql://127.0.0.1:3306/website?characterEncoding=utf8&useSSL=false&allowMultiQueries=true&serverTimezone=GMT", "root",
                "root");
    }

    private static DataSource getDataSource() {
        HikariCpPlugin druidPlugin = createDruidPlugin();
        druidPlugin.start();
        return druidPlugin.getDataSource();
    }

    public static void mains(String[] args) {
        // base entity 所使用的包名
        String baseModelPackageName = "com.tianxia120.website.bean";
        // base entity 文件保存路径
        String baseModelOutputDir = PathKit.getWebRootPath() + "/src/main/java/com/tianxia120/website/bean";

        // entity 所使用的包名 (MappingKit 默认使用的包名)
        String modelPackageName = "com.tianxia120.website.bean.model";
        // entity 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径)
        String modelOutputDir = PathKit.getWebRootPath() + "/src/main/java/com/tianxia120/website/bean/model";

        // 创建生成器
        Generator generator = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir);
        // 设置是否生成链式 setter 方法
        generator.setGenerateChainSetter(true);
        // 设置是否在 Model 中生成 dao 对象
        generator.setGenerateDaoInModel(true);
        // 设置model映射文件名称
        generator.setMappingKitClassName("MappingKit");
        // 设置bean 模板
        generator.setBaseModelTemplate("/cn/hinglo/website/generator/baseModel.jf");
        // 设置model
        generator.setModelTemplate("/cn/hinglo/website/generator/model.jf");
        // 设置映射文件模板
        generator.setMappingKitTemplate("/cn/hinglo/website/generator/mappingKit.jf");
        generator.generate();
    }
}
